package com.xuelang.pipeline.domain.task.service;

import com.xuelang.pipeline.domain.task.TaskInstance;

import java.util.List;

/**
 * <p>任务实例域服务接口</p>
 *
 * @author : yixin.lys
 * @date : 2024-06-19 11:53
 **/
public interface TaskInstanceDomainService {

    /**
     * 根据流水线实例code获取任务实例数组
     *
     * @param pipelineInstanceCode
     * @return
     */
    List<TaskInstance> queryByPipelineInstanceCode(String pipelineInstanceCode);

    /**
     * 根据任务配置Uuid和流水线实例获取任务实例
     *
     * @param taskUuid
     * @return
     */
    TaskInstance queryByTaskUuid(String taskUuid, String pipelineInstanceCode);

    /**
     * 查询对应组件的构建output信息（imageTag信息）
     * @param pipelineInstanceCode
     * @param taskInstanceCode
     * @return
     */
    List<String> queryBuildOutput(String pipelineInstanceCode, String taskInstanceCode);

    /**
     * 根据任务code唯一标识获取实例
     *
     * @param code
     * @return
     */
    TaskInstance queryByTaskCode(String code);

    /**
     * 新增流水线实例
     *
     * @param taskInstance
     */
    void add(TaskInstance taskInstance);


    /**
     * 更新流水线实例
     *
     * @param taskInstance
     */
    void update(TaskInstance taskInstance);


    /**
     * 根据id批量删除
     *
     * @param idList
     */
    void removeByIds(List<String> idList);

    /**
     * 根据流水线实例id批量删除
     *
     * @param pipelineInstanceCodeList
     */
    void removeByPipelineInstanceCodeList(List<String> pipelineInstanceCodeList);

    /**
     * 根据任务实例Uuid批量删除
     *
     * @param taskUuidList
     */
    void removeByTaskUuidList(List<String> taskUuidList);


}
